/**
 * 封装uni缓存功能
 */
const storage = {
    /**
     * 设置缓存
     * @param key 缓存键
     * @param value 缓存值
     * @param expire 过期时间，默认0表示永久有效
     */
    set(key: string, value: any, expire = 0): void {
        let obj = {
            data: value, //存储的数据
            time: Date.now() / 1000, //记录存储的时间戳
            expire: expire, //记录过期时间，单位秒
        };
        uni.setStorageSync(key, JSON.stringify(obj));
    },

    /**
     * 获取缓存
     * @param key 缓存键
     * @returns 缓存值
     */
    get(key: string): any {
        let val = uni.getStorageSync(key);
        if (!val) {
            return null;
        }
        val = JSON.parse(val);
        if (val.expire && Date.now() / 1000 - val.time > val.expire) {
            uni.removeStorageSync(key);
            return null;
        }
        return val.data;
    },

    /**
     * 移除缓存
     * @param key 缓存键
     */
    delete(key: string): void {
        uni.removeStorageSync(key);
    },

    /**
     * 移除全部缓存
     */
    clear(): void {
        uni.clearStorageSync();
    },
};

export default storage;
